Extract velo matrices and gene info from adata
python3 ../src/pull_velo_info.py
R load
suppressPackageStartupMessages({
library("tidyverse")
library("reticulate")
library("ggplot2")
library("SingleCellExperiment")
library("scater")
library("Seurat")
library("SeuratDisk")
library("zellkonverter")
})
# load('~/data/chick_miruna/08052021.RData')
# save just combined to reduce load time from Miruna's entire environment
# save(combined, file = '~/data/chick_miruna/combined_mgg_08052021.Rdata' )
load('~/data/chick_miruna/combined_mgg_08052021.Rdata')
combined
An object of class Seurat
20555 features across 17295 samples within 2 assays
Active assay: RNA (18555 features, 0 variable features)
1 other assay present: integrated
2 dimensional reductions calculated: pca, umap
color_palette <- pals::glasbey()[1:14]
names(color_palette) <- seq(0,13, 1)
Plots
genes <- c("NTRK3", "REEP5", "RBP3", "THRB", "MEIS2", "PRDM1", "ONECUT1", "TOX3", "SIX6", "OTX2", "FGFR3", "TFAP2E")
for (i in genes){
print( velo_scale_df %>% filter(Gene == i) %>% ggplot(aes(x=UMAP_1, y = UMAP_2, color = Velocity)) +
geom_point(size = 0.3) +
cowplot::theme_cowplot() + scale_color_gradient2(
low = "green",
high = "blue",
mid = 'gray'
) +
facet_wrap(~cluster.condition) +
ggtitle(i)
)
}












devtools::session_info()
─ Session info ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
setting value
version R version 4.1.2 (2021-11-01)
os macOS Catalina 10.15.7
system x86_64, darwin17.0
ui RStudio
language (EN)
collate en_US.UTF-8
ctype en_US.UTF-8
tz America/New_York
date 2022-05-16
rstudio 2021.09.0+351 Ghost Orchid (desktop)
pandoc 2.14.0.3 @ /Applications/RStudio.app/Contents/MacOS/pandoc/ (via rmarkdown)
─ Packages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
! package * version date (UTC) lib source
P abind 1.4-5 2016-07-21 [?] CRAN (R 4.1.0)
P assertthat 0.2.1 2019-03-21 [?] CRAN (R 4.1.0)
P backports 1.4.1 2021-12-13 [?] CRAN (R 4.1.0)
basilisk 1.6.0 2021-10-26 [1] Bioconductor
basilisk.utils 1.6.0 2021-10-26 [1] Bioconductor
P beachmat 2.10.0 2021-10-26 [?] Bioconductor
P beeswarm 0.4.0 2021-06-01 [?] CRAN (R 4.1.0)
P Biobase * 2.54.0 2021-10-26 [?] Bioconductor
P BiocGenerics * 0.40.0 2021-10-26 [?] Bioconductor
P BiocManager 1.30.16 2021-06-15 [?] CRAN (R 4.1.0)
P BiocNeighbors 1.12.0 2021-10-26 [?] Bioconductor
P BiocParallel 1.28.3 2021-12-09 [?] Bioconductor
P BiocSingular 1.10.0 2021-10-26 [?] Bioconductor
P bit 4.0.4 2020-08-04 [?] CRAN (R 4.1.0)
P bit64 4.0.5 2020-08-30 [?] CRAN (R 4.1.0)
P bitops 1.0-7 2021-04-24 [?] CRAN (R 4.1.0)
brio 1.1.3 2021-11-30 [2] CRAN (R 4.1.0)
P broom 0.7.12 2022-01-28 [?] CRAN (R 4.1.2)
P bslib 0.3.1 2021-10-06 [?] CRAN (R 4.1.0)
P cachem 1.0.6 2021-08-19 [?] CRAN (R 4.1.0)
P callr 3.7.0 2021-04-20 [?] CRAN (R 4.1.0)
P cellranger 1.1.0 2016-07-27 [?] CRAN (R 4.1.0)
P cli 3.1.1 2022-01-20 [?] CRAN (R 4.1.2)
P clipr 0.7.1 2020-10-08 [?] CRAN (R 4.1.0)
P cluster 2.1.2 2021-04-17 [?] CRAN (R 4.1.0)
P codetools 0.2-18 2020-11-04 [?] CRAN (R 4.1.0)
P colorspace 2.0-2 2021-06-24 [?] CRAN (R 4.1.0)
P cowplot 1.1.1 2020-12-30 [?] CRAN (R 4.1.0)
P crayon 1.4.2 2021-10-29 [?] CRAN (R 4.1.0)
P data.table 1.14.2 2021-09-27 [?] CRAN (R 4.1.0)
datapasta 3.1.0 2020-01-17 [2] CRAN (R 4.1.0)
P DBI 1.1.2 2021-12-20 [?] CRAN (R 4.1.0)
P dbplyr 2.1.1 2021-04-06 [?] CRAN (R 4.1.0)
P DelayedArray 0.20.0 2021-10-26 [?] Bioconductor
P DelayedMatrixStats 1.16.0 2021-10-26 [?] Bioconductor
P deldir 1.0-6 2021-10-23 [?] CRAN (R 4.1.0)
desc 1.4.0 2021-09-28 [2] CRAN (R 4.1.0)
devtools 2.4.3 2021-11-30 [2] CRAN (R 4.1.0)
P dichromat 2.0-0 2013-01-24 [?] CRAN (R 4.1.0)
P digest 0.6.29 2021-12-01 [?] CRAN (R 4.1.0)
dir.expiry 1.2.0 2021-10-26 [1] Bioconductor
P dplyr * 1.0.7 2021-06-18 [?] CRAN (R 4.1.0)
P DT 0.20 2021-11-15 [?] CRAN (R 4.1.0)
P ellipsis 0.3.2 2021-04-29 [?] CRAN (R 4.1.0)
P evaluate 0.14 2019-05-28 [?] CRAN (R 4.1.0)
P fansi 1.0.2 2022-01-14 [?] CRAN (R 4.1.2)
P farver 2.1.0 2021-02-28 [?] CRAN (R 4.1.0)
P fastmap 1.1.0 2021-01-25 [?] CRAN (R 4.1.0)
filelock 1.0.2 2018-10-05 [1] CRAN (R 4.1.0)
P fitdistrplus 1.1-6 2021-09-28 [?] CRAN (R 4.1.0)
P forcats * 0.5.1 2021-01-27 [?] CRAN (R 4.1.0)
P fs 1.5.2 2021-12-08 [?] CRAN (R 4.1.0)
P future 1.23.0 2021-10-31 [?] CRAN (R 4.1.0)
P future.apply 1.8.1 2021-08-10 [?] CRAN (R 4.1.0)
P generics 0.1.2 2022-01-31 [?] CRAN (R 4.1.2)
P GenomeInfoDb * 1.30.1 2022-01-30 [?] Bioconductor
P GenomeInfoDbData 1.2.7 2022-02-03 [?] Bioconductor
P GenomicRanges * 1.46.1 2021-11-18 [?] Bioconductor
P ggbeeswarm 0.6.0 2017-08-07 [?] CRAN (R 4.1.0)
P ggplot2 * 3.3.5 2021-06-25 [?] CRAN (R 4.1.0)
P ggrepel 0.9.1 2021-01-15 [?] CRAN (R 4.1.0)
P ggridges 0.5.3 2021-01-08 [?] CRAN (R 4.1.0)
P globals 0.14.0 2020-11-22 [?] CRAN (R 4.1.0)
P glue 1.6.1 2022-01-22 [?] CRAN (R 4.1.2)
P goftest 1.2-3 2021-10-07 [?] CRAN (R 4.1.0)
P gridExtra 2.3 2017-09-09 [?] CRAN (R 4.1.0)
P gtable 0.3.0 2019-03-25 [?] CRAN (R 4.1.0)
P haven 2.4.3 2021-08-04 [?] CRAN (R 4.1.0)
hdf5r 1.3.5 2021-11-15 [1] CRAN (R 4.1.0)
P hms 1.1.1 2021-09-26 [?] CRAN (R 4.1.0)
P htmltools 0.5.2 2021-08-25 [?] CRAN (R 4.1.0)
P htmlwidgets 1.5.4 2021-09-08 [?] CRAN (R 4.1.0)
P httpuv 1.6.5 2022-01-05 [?] CRAN (R 4.1.2)
P httr 1.4.2 2020-07-20 [?] CRAN (R 4.1.0)
P ica 1.0-2 2018-05-24 [?] CRAN (R 4.1.0)
P igraph 1.2.11 2022-01-04 [?] CRAN (R 4.1.2)
P IRanges * 2.28.0 2021-10-26 [?] Bioconductor
P irlba 2.3.5 2021-12-06 [?] CRAN (R 4.1.0)
P jquerylib 0.1.4 2021-04-26 [?] CRAN (R 4.1.0)
P jsonlite 1.7.3 2022-01-17 [?] CRAN (R 4.1.2)
P KernSmooth 2.23-20 2021-05-03 [?] CRAN (R 4.1.0)
P knitr 1.37 2021-12-16 [?] CRAN (R 4.1.0)
P labeling 0.4.2 2020-10-20 [?] CRAN (R 4.1.0)
P later 1.3.0 2021-08-18 [?] CRAN (R 4.1.0)
P lattice 0.20-45 2021-09-22 [?] CRAN (R 4.1.2)
P lazyeval 0.2.2 2019-03-15 [?] CRAN (R 4.1.0)
P leiden 0.3.9 2021-07-27 [?] CRAN (R 4.1.0)
P lifecycle 1.0.1 2021-09-24 [?] CRAN (R 4.1.0)
P listenv 0.8.0 2019-12-05 [?] CRAN (R 4.1.0)
P lmtest 0.9-39 2021-11-07 [?] CRAN (R 4.1.0)
P lubridate 1.8.0 2021-10-07 [?] CRAN (R 4.1.0)
P magrittr 2.0.2 2022-01-26 [?] CRAN (R 4.1.2)
P mapproj 1.2.8 2022-01-12 [?] CRAN (R 4.1.2)
P maps 3.4.0 2021-09-25 [?] CRAN (R 4.1.0)
P MASS 7.3-55 2022-01-13 [?] CRAN (R 4.1.2)
P Matrix 1.4-0 2021-12-08 [?] CRAN (R 4.1.0)
P MatrixGenerics * 1.6.0 2021-10-26 [?] Bioconductor
P matrixStats * 0.61.0 2021-09-17 [?] CRAN (R 4.1.0)
memoise 2.0.1 2021-11-26 [2] CRAN (R 4.1.0)
P mgcv 1.8-38 2021-10-06 [?] CRAN (R 4.1.0)
P mime 0.12 2021-09-28 [?] CRAN (R 4.1.0)
P miniUI 0.1.1.1 2018-05-18 [?] CRAN (R 4.1.0)
P modelr 0.1.8 2020-05-19 [?] CRAN (R 4.1.0)
P munsell 0.5.0 2018-06-12 [?] CRAN (R 4.1.0)
P nlme 3.1-155 2022-01-13 [?] CRAN (R 4.1.2)
P pals 1.7 2021-04-17 [?] CRAN (R 4.1.0)
P parallelly 1.30.0 2021-12-17 [?] CRAN (R 4.1.0)
P patchwork 1.1.1 2020-12-17 [?] CRAN (R 4.1.0)
P pbapply 1.5-0 2021-09-16 [?] CRAN (R 4.1.0)
P pillar 1.7.0 2022-02-01 [?] CRAN (R 4.1.2)
pkgbuild 1.3.1 2021-12-20 [2] CRAN (R 4.1.0)
P pkgconfig 2.0.3 2019-09-22 [?] CRAN (R 4.1.0)
pkgload 1.2.4 2021-11-30 [2] CRAN (R 4.1.0)
P plotly 4.10.0 2021-10-09 [?] CRAN (R 4.1.0)
P plyr 1.8.6 2020-03-03 [?] CRAN (R 4.1.0)
P png 0.1-7 2013-12-03 [?] CRAN (R 4.1.0)
P polyclip 1.10-0 2019-03-14 [?] CRAN (R 4.1.0)
P prettyunits 1.1.1 2020-01-24 [?] CRAN (R 4.1.0)
P processx 3.5.2 2021-04-30 [?] CRAN (R 4.1.0)
P promises 1.2.0.1 2021-02-11 [?] CRAN (R 4.1.0)
P ps 1.6.0 2021-02-28 [?] CRAN (R 4.1.0)
P purrr * 0.3.4 2020-04-17 [?] CRAN (R 4.1.0)
P R6 2.5.1 2021-08-19 [?] CRAN (R 4.1.0)
P RANN 2.6.1 2019-01-08 [?] CRAN (R 4.1.0)
P RColorBrewer 1.1-2 2014-12-07 [?] CRAN (R 4.1.0)
P Rcpp 1.0.8 2022-01-13 [?] CRAN (R 4.1.2)
P RcppAnnoy 0.0.19 2021-07-30 [?] CRAN (R 4.1.0)
P RCurl 1.98-1.5 2021-09-17 [?] CRAN (R 4.1.0)
P readr * 2.1.2 2022-01-30 [?] CRAN (R 4.1.2)
P readxl 1.3.1 2019-03-13 [?] CRAN (R 4.1.0)
P remotes 2.4.2 2021-11-30 [?] CRAN (R 4.1.0)
P renv 0.15.2 2022-01-24 [?] CRAN (R 4.1.2)
P reprex 2.0.1 2021-08-05 [?] CRAN (R 4.1.0)
P reshape2 1.4.4 2020-04-09 [?] CRAN (R 4.1.0)
P reticulate * 1.24 2022-01-26 [?] CRAN (R 4.1.2)
P rlang 1.0.1 2022-02-03 [?] CRAN (R 4.1.2)
P rmarkdown 2.11 2021-09-14 [?] CRAN (R 4.1.0)
P ROCR 1.0-11 2020-05-02 [?] CRAN (R 4.1.0)
P rpart 4.1.16 2022-01-24 [?] CRAN (R 4.1.2)
P rprojroot 2.0.2 2020-11-15 [?] CRAN (R 4.1.0)
P rstudioapi 0.13 2020-11-12 [?] CRAN (R 4.1.0)
P rsvd 1.0.5 2021-04-16 [?] CRAN (R 4.1.0)
P Rtsne 0.15 2018-11-10 [?] CRAN (R 4.1.0)
P rvest 1.0.2 2021-10-16 [?] CRAN (R 4.1.0)
P S4Vectors * 0.32.3 2021-11-21 [?] Bioconductor
P sass 0.4.0 2021-05-12 [?] CRAN (R 4.1.0)
P ScaledMatrix 1.2.0 2021-10-26 [?] Bioconductor
P scales 1.1.1 2020-05-11 [?] CRAN (R 4.1.0)
P scater * 1.22.0 2021-10-26 [?] Bioconductor
P scattermore 0.7 2020-11-24 [?] CRAN (R 4.1.0)
P sctransform 0.3.3 2022-01-13 [?] CRAN (R 4.1.2)
P scuttle * 1.4.0 2021-10-26 [?] Bioconductor
sessioninfo 1.2.2 2021-12-06 [2] CRAN (R 4.1.0)
P Seurat * 4.1.0 2022-01-14 [?] CRAN (R 4.1.2)
SeuratDisk * 0.0.0.9019 2022-02-03 [1] Github (mojaveazure/seurat-disk@163f1aa)
P SeuratObject * 4.0.4 2021-11-23 [?] CRAN (R 4.1.0)
P shiny 1.7.1 2021-10-02 [?] CRAN (R 4.1.0)
P SingleCellExperiment * 1.16.0 2021-10-26 [?] Bioconductor
P sparseMatrixStats 1.6.0 2021-10-26 [?] Bioconductor
P spatstat.core 2.3-2 2021-11-26 [?] CRAN (R 4.1.0)
P spatstat.data 2.1-2 2021-12-17 [?] CRAN (R 4.1.0)
P spatstat.geom 2.3-1 2021-12-10 [?] CRAN (R 4.1.0)
P spatstat.sparse 2.1-0 2021-12-17 [?] CRAN (R 4.1.0)
P spatstat.utils 2.3-0 2021-12-12 [?] CRAN (R 4.1.0)
P stringi 1.7.6 2021-11-29 [?] CRAN (R 4.1.0)
P stringr * 1.4.0 2019-02-10 [?] CRAN (R 4.1.0)
P SummarizedExperiment * 1.24.0 2021-10-26 [?] Bioconductor
P survival 3.2-13 2021-08-24 [?] CRAN (R 4.1.0)
P tensor 1.5 2012-05-05 [?] CRAN (R 4.1.0)
testthat 3.1.2 2022-01-20 [2] CRAN (R 4.1.2)
P tibble * 3.1.6 2021-11-07 [?] CRAN (R 4.1.0)
P tidyr * 1.2.0 2022-02-01 [?] CRAN (R 4.1.2)
P tidyselect 1.1.1 2021-04-30 [?] CRAN (R 4.1.0)
P tidyverse * 1.3.1 2021-04-15 [?] CRAN (R 4.1.0)
P tzdb 0.2.0 2021-10-27 [?] CRAN (R 4.1.0)
usethis 2.1.5 2021-12-09 [2] CRAN (R 4.1.0)
P utf8 1.2.2 2021-07-24 [?] CRAN (R 4.1.0)
P uwot 0.1.11 2021-12-02 [?] CRAN (R 4.1.0)
P vctrs 0.3.8 2021-04-29 [?] CRAN (R 4.1.0)
P vipor 0.4.5 2017-03-22 [?] CRAN (R 4.1.0)
P viridis 0.6.2 2021-10-13 [?] CRAN (R 4.1.0)
P viridisLite 0.4.0 2021-04-13 [?] CRAN (R 4.1.0)
P vroom 1.5.7 2021-11-30 [?] CRAN (R 4.1.0)
P withr 2.4.3 2021-11-30 [?] CRAN (R 4.1.0)
P xfun 0.29 2021-12-14 [?] CRAN (R 4.1.0)
P xml2 1.3.3 2021-11-30 [?] CRAN (R 4.1.0)
P xtable 1.8-4 2019-04-21 [?] CRAN (R 4.1.0)
P XVector 0.34.0 2021-10-26 [?] Bioconductor
P yaml 2.2.2 2022-01-25 [?] CRAN (R 4.1.2)
zellkonverter * 1.5.0 2022-02-03 [1] Github (theislab/zellkonverter@40e85a1)
P zlibbioc 1.40.0 2021-10-26 [?] Bioconductor
P zoo 1.8-9 2021-03-09 [?] CRAN (R 4.1.0)
[1] /Users/mcgaugheyd/git/chick_analysis_collab/renv/library/R-4.1/x86_64-apple-darwin17.0
[2] /Library/Frameworks/R.framework/Versions/4.1/Resources/library
P ── Loaded and on-disk path mismatch.
─ Python configuration ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
python: /Users/mcgaugheyd/git/chick_analysis_collab/renv/python/virtualenvs/renv-python-3.9/bin/python
libpython: /usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/config-3.9-darwin/libpython3.9.dylib
pythonhome: /Users/mcgaugheyd/git/chick_analysis_collab/renv/python/virtualenvs/renv-python-3.9:/Users/mcgaugheyd/git/chick_analysis_collab/renv/python/virtualenvs/renv-python-3.9
version: 3.9.4 (default, Apr 5 2021, 01:49:30) [Clang 12.0.0 (clang-1200.0.32.29)]
numpy: /Users/mcgaugheyd/git/chick_analysis_collab/renv/python/virtualenvs/renv-python-3.9/lib/python3.9/site-packages/numpy
numpy_version: 1.21.5
NOTE: Python version was forced by RETICULATE_PYTHON
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
LS0tCnRpdGxlOiAiTWlydW5hIEdUIENoaWNrIFZlbG9jaXR5IEN1c3RvbSBQbG90dGluZyIKYXV0aG9yOiBEYXZpZCBNY0dhdWdoZXkKZGF0ZTogMjAyMi0wNS0xNgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZTogdW5pdGVkCi0tLQoKCiMgRXh0cmFjdCB2ZWxvIG1hdHJpY2VzIGFuZCBnZW5lIGluZm8gZnJvbSBhZGF0YQpgYGB7YmFzaH0KcHl0aG9uMyAuLi9zcmMvcHVsbF92ZWxvX2luZm8ucHkKYGBgCgojIFIgbG9hZApgYGB7cn0Kc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKHsKICBsaWJyYXJ5KCJ0aWR5dmVyc2UiKQogIGxpYnJhcnkoInJldGljdWxhdGUiKQogIGxpYnJhcnkoImdncGxvdDIiKQogIGxpYnJhcnkoIlNpbmdsZUNlbGxFeHBlcmltZW50IikKICBsaWJyYXJ5KCJzY2F0ZXIiKQogIGxpYnJhcnkoIlNldXJhdCIpCiAgbGlicmFyeSgiU2V1cmF0RGlzayIpCiAgbGlicmFyeSgiemVsbGtvbnZlcnRlciIpCn0pCiMgbG9hZCgnfi9kYXRhL2NoaWNrX21pcnVuYS8wODA1MjAyMS5SRGF0YScpCiMgc2F2ZSBqdXN0IGNvbWJpbmVkIHRvIHJlZHVjZSBsb2FkIHRpbWUgZnJvbSBNaXJ1bmEncyBlbnRpcmUgZW52aXJvbm1lbnQKIyBzYXZlKGNvbWJpbmVkLCBmaWxlID0gJ34vZGF0YS9jaGlja19taXJ1bmEvY29tYmluZWRfbWdnXzA4MDUyMDIxLlJkYXRhJyApCmxvYWQoJ34vZGF0YS9jaGlja19taXJ1bmEvY29tYmluZWRfbWdnXzA4MDUyMDIxLlJkYXRhJykKY29tYmluZWQKCmNvbG9yX3BhbGV0dGUgPC0gcGFsczo6Z2xhc2JleSgpWzE6MTRdCm5hbWVzKGNvbG9yX3BhbGV0dGUpIDwtIHNlcSgwLDEzLCAxKQpgYGAKCgojIEJ1aWxkIExhYmVsbGVkIE1hdHJpeApgYGB7cn0KbGlicmFyeSh0aWR5dmVyc2UpCgptYWtlX3ZlbG9fYmMgPC0gZnVuY3Rpb24ocHJlZml4ID0gJy4uL2RhdGEvbTAwOF9zY1ZlbG8nKXsKICB2ZWxvIDwtIHJlYWRfY3N2KGdsdWU6OmdsdWUoJ3twcmVmaXh9LnZlbG8uY3N2JykpCiAgZ2VuZSA8LSByZWFkX2NzdihnbHVlOjpnbHVlKCd7cHJlZml4fS52ZWxvZ2VuZXMuY3N2JykpCiAgCiAgZ2VuZV9pZHggPC0gY29sbmFtZXModmVsb1ssLTFdKSAlPiUgYXMuaW50ZWdlcigpCiAgY29sbmFtZXModmVsbylbMjpuY29sKHZlbG8pXSA8LSBnZW5lICU+JSBtdXRhdGUoaWR4ID0gcm93X251bWJlcigpIC0gMSkgJT4lIGZpbHRlcihpZHggJWluJSBnZW5lX2lkeCkgJT4lIHB1bGwoMSkKICAKICBvYnMgPC0gcmVhZF9jc3YoZ2x1ZTo6Z2x1ZSgne3ByZWZpeH0ub2JzLmNzdicpKQogIAogIGJjX3ZlbG8gPC0gY2JpbmQob2JzWywxXSwgdmVsb1ssLTFdKQogIGNvbG5hbWVzKGJjX3ZlbG8pWzFdIDwtICdCYXJjb2RlJwogIGJjX3ZlbG8KfQoKbTAwNl92ZWxvIDwtIG1ha2VfdmVsb19iYygnLi4vZGF0YS9tMDA2X3NjVmVsbycpCm0wMDdfdmVsbyA8LSBtYWtlX3ZlbG9fYmMoJy4uL2RhdGEvbTAwN19zY1ZlbG8nKQptMDA4X3ZlbG8gPC0gbWFrZV92ZWxvX2JjKCcuLi9kYXRhL20wMDhfc2NWZWxvJykKCnZlbG9fcGFuIDwtIGZ1bmN0aW9uKGdlbmUpewogIG0wMDYgPC0gbTAwNl92ZWxvWyxjKCdCYXJjb2RlJywgZ2VuZSldICU+JSAKICAgIGxlZnRfam9pbihjb21iaW5lZEByZWR1Y3Rpb25zJHVtYXBAY2VsbC5lbWJlZGRpbmdzICU+JSBhc190aWJibGUocm93bmFtZXMgPSAnQmFyY29kZScpLCBieSA9ICJCYXJjb2RlIikgJT4lIAogICAgbGVmdF9qb2luKGNvbWJpbmVkQG1ldGEuZGF0YSAlPiUgYXNfdGliYmxlKHJvd25hbWVzID0gJ0JhcmNvZGUnKSAlPiUgc2VsZWN0KEJhcmNvZGUsIGNsdXN0ZXIuY29uZGl0aW9uKSwgYnkgPSAiQmFyY29kZSIpCiAgbTAwNyA8LSBtMDA3X3ZlbG9bLGMoJ0JhcmNvZGUnLCBnZW5lKV0gJT4lIAogICAgbGVmdF9qb2luKGNvbWJpbmVkQHJlZHVjdGlvbnMkdW1hcEBjZWxsLmVtYmVkZGluZ3MgJT4lIGFzX3RpYmJsZShyb3duYW1lcyA9ICdCYXJjb2RlJyksIGJ5ID0gIkJhcmNvZGUiKSAlPiUgCiAgICBsZWZ0X2pvaW4oY29tYmluZWRAbWV0YS5kYXRhICU+JSBhc190aWJibGUocm93bmFtZXMgPSAnQmFyY29kZScpICU+JSBzZWxlY3QoQmFyY29kZSwgY2x1c3Rlci5jb25kaXRpb24pLCBieSA9ICJCYXJjb2RlIikKICBtMDA4IDwtIG0wMDhfdmVsb1ssYygnQmFyY29kZScsIGdlbmUpXSAlPiUgCiAgICBsZWZ0X2pvaW4oY29tYmluZWRAcmVkdWN0aW9ucyR1bWFwQGNlbGwuZW1iZWRkaW5ncyAlPiUgYXNfdGliYmxlKHJvd25hbWVzID0gJ0JhcmNvZGUnKSwgYnkgPSAiQmFyY29kZSIpICU+JSAKICAgIGxlZnRfam9pbihjb21iaW5lZEBtZXRhLmRhdGEgJT4lIGFzX3RpYmJsZShyb3duYW1lcyA9ICdCYXJjb2RlJykgJT4lIHNlbGVjdChCYXJjb2RlLCBjbHVzdGVyLmNvbmRpdGlvbiksIGJ5ID0gIkJhcmNvZGUiKQogIG91dCA8LSBiaW5kX3Jvd3MobTAwNiwgbTAwNywgbTAwOCkKICBjb2xuYW1lcyhvdXQpWzJdIDwtICJWZWxvY2l0eSIKICBvdXQKfQoKdmVsb19zY2FsZSA8LSBmdW5jdGlvbigpewogICMgeiBzY2FsZXMgdGhlIHZlbG9jaXR5IHBlciBzYW1wbGUKICAjIGFuZCByZXR1cm5zIGEgaHVnZSB0aWR5IHRpYmJsZQogIG0wMDZfbCA8LSBtMDA2X3ZlbG8gJT4lIHBpdm90X2xvbmdlcigtQmFyY29kZSkgJT4lIAogICAgbXV0YXRlKHZhbHVlID0gc2NhbGUodmFsdWUpKSAlPiUgCiAgICBsZWZ0X2pvaW4oY29tYmluZWRAcmVkdWN0aW9ucyR1bWFwQGNlbGwuZW1iZWRkaW5ncyAlPiUgYXNfdGliYmxlKHJvd25hbWVzID0gJ0JhcmNvZGUnKSwgYnkgPSAiQmFyY29kZSIpICU+JSAKICAgIGxlZnRfam9pbihjb21iaW5lZEBtZXRhLmRhdGEgJT4lIGFzX3RpYmJsZShyb3duYW1lcyA9ICdCYXJjb2RlJykgJT4lIHNlbGVjdChCYXJjb2RlLCBjbHVzdGVyLmNvbmRpdGlvbiksIGJ5ID0gIkJhcmNvZGUiKQogIG0wMDdfbCA8LSAgbTAwN192ZWxvICU+JSBwaXZvdF9sb25nZXIoLUJhcmNvZGUpICU+JSAKICAgIG11dGF0ZSh2YWx1ZSA9IHNjYWxlKHZhbHVlKSkgJT4lIAogICAgbGVmdF9qb2luKGNvbWJpbmVkQHJlZHVjdGlvbnMkdW1hcEBjZWxsLmVtYmVkZGluZ3MgJT4lIGFzX3RpYmJsZShyb3duYW1lcyA9ICdCYXJjb2RlJyksIGJ5ID0gIkJhcmNvZGUiKSAlPiUgCiAgICBsZWZ0X2pvaW4oY29tYmluZWRAbWV0YS5kYXRhICU+JSBhc190aWJibGUocm93bmFtZXMgPSAnQmFyY29kZScpICU+JSBzZWxlY3QoQmFyY29kZSwgY2x1c3Rlci5jb25kaXRpb24pLCBieSA9ICJCYXJjb2RlIikKICBtMDA4X2wgPC0gbTAwOF92ZWxvICU+JSBwaXZvdF9sb25nZXIoLUJhcmNvZGUpICU+JSAKICAgIG11dGF0ZSh2YWx1ZSA9IHNjYWxlKHZhbHVlKSkgJT4lIAogICAgbGVmdF9qb2luKGNvbWJpbmVkQHJlZHVjdGlvbnMkdW1hcEBjZWxsLmVtYmVkZGluZ3MgJT4lIGFzX3RpYmJsZShyb3duYW1lcyA9ICdCYXJjb2RlJyksIGJ5ID0gIkJhcmNvZGUiKSAlPiUgCiAgICBsZWZ0X2pvaW4oY29tYmluZWRAbWV0YS5kYXRhICU+JSBhc190aWJibGUocm93bmFtZXMgPSAnQmFyY29kZScpICU+JSBzZWxlY3QoQmFyY29kZSwgY2x1c3Rlci5jb25kaXRpb24pLCBieSA9ICJCYXJjb2RlIikKICBvdXQgPC0gYmluZF9yb3dzKG0wMDZfbCwgbTAwN19sLCBtMDA4X2wpICU+JSBkYXRhLmZyYW1lKCkKICBjb2xuYW1lcyhvdXQpW2MoMiwzKV0gPC0gYygiR2VuZSIsICJWZWxvY2l0eSIpCiAgb3V0IAp9CnZlbG9fc2NhbGVfZGYgPC0gdmVsb19zY2FsZSgpCmBgYAoKCiMgUGxvdHMKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5oZWlnaHQgPSAyfQpnZW5lcyA8LSBjKCJOVFJLMyIsICJSRUVQNSIsICJSQlAzIiwgIlRIUkIiLCAiTUVJUzIiLCAiUFJETTEiLCAiT05FQ1VUMSIsICJUT1gzIiwgIlNJWDYiLCAiT1RYMiIsICJGR0ZSMyIsICAiVEZBUDJFIikKZm9yIChpIGluIGdlbmVzKXsKICBwcmludCggdmVsb19zY2FsZV9kZiAlPiUgZmlsdGVyKEdlbmUgPT0gaSkgJT4lICBnZ3Bsb3QoYWVzKHg9VU1BUF8xLCB5ID0gVU1BUF8yLCBjb2xvciA9IFZlbG9jaXR5KSkgKyAKICAgICAgICAgICBnZW9tX3BvaW50KHNpemUgPSAwLjMpICsgIAogICAgICAgICAgIGNvd3Bsb3Q6OnRoZW1lX2Nvd3Bsb3QoKSArIHNjYWxlX2NvbG9yX2dyYWRpZW50MigKICAgICAgICAgICAgIGxvdyA9ICJncmVlbiIsIAogICAgICAgICAgICAgaGlnaCA9ICJibHVlIiwgCiAgICAgICAgICAgICBtaWQgPSAnZ3JheScKICAgICAgICAgICApICsgCiAgICAgICAgICAgZmFjZXRfd3JhcCh+Y2x1c3Rlci5jb25kaXRpb24pICsgCiAgICAgICAgICAgZ2d0aXRsZShpKQogICkKfQpgYGAKCgpgYGB7cn0KZGV2dG9vbHM6OnNlc3Npb25faW5mbygpCmBgYAo=